package com.clicacao.clicacao;

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.clicacao.library.ClicacaoFunctions;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class AdventureMissionsScreen extends Activity{

	//Variaveis que veem da tela anterior
	String uid; //Id do usuario
	String aid; //Id da aventura
	
	//List view a preencher
	ListView listView;
	
	//Preenchimento do ListView
	ArrayList<HashMap<String, String>> missionList;
	HashMap<String, String> mission;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.adventure_missions_screen);
		
		//Testando a passagem de parametros da tela anterior
		uid = getIntent().getExtras().getString("uid");
		aid = getIntent().getExtras().getString("aid");
		
		//Pegando o listview
		listView = (ListView)findViewById(R.id.lsvAdventureUserMissions);
		
		//Carrego as missoes do usuario na tela
		//Buscando o json no servidor com uma asynctask
		new AsyncTask<Void, Void, JSONObject>(){
			
			ClicacaoFunctions clicacaoFunctions;
			
			@Override
			protected JSONObject doInBackground(Void... params) {
				JSONObject json;
				clicacaoFunctions = new ClicacaoFunctions();
				json = clicacaoFunctions.getUserAdventureMissions(uid, aid);
				return json;
			}
			
			@Override
			protected void onPostExecute(JSONObject result) {
				super.onPostExecute(result);
				//Acabo com a mensagem de carregando
				//Com a resposta json obtida, fazemos o parser para preencher o listview
				try {
					//Confere para ver se o resultado foi positivo
					missionList = new ArrayList<HashMap<String,String>>();
					if(result.getString("success").equals("1")){
						JSONArray json_mission_array = result.getJSONArray("missao");
						if(json_mission_array.isNull(0)){
							//Nao encontrou nenhum objeto para o usuario
							Toast.makeText(getApplicationContext(), "Usuario nao possui nenhuma MISSAO para concluir nesta aventura!", Toast.LENGTH_SHORT).show();
						}else{//Preenche o listview
							Integer i = Integer.valueOf(0);
							String status; 
							for(i = 0; i < json_mission_array.length(); i++){
								mission = new HashMap<String, String>();
								JSONObject json_mission = json_mission_array.getJSONObject(i);
								mission.put("id_missao_usuario", json_mission.getString("muid"));
								mission.put("titulo", json_mission.getString("titulo"));
								mission.put("descricao", json_mission.getString("descricao"));
								
								if(json_mission.getString("status").equals("0")){
									status = "MISSAO EM ANDAMENTO";
								}else{
									status = "MISSAO CONCLUIDA!";
								}
								mission.put("status", status);
								missionList.add(mission);
							}
						}
					}
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				//Hora de preencher o listview
				//Primeiro confere para ver se objectlist nao esta vazio
				if(!missionList.isEmpty()){
					String campos[] = {"id_missao_usuario", "titulo", "descricao", "status"};
					int layout[] = {R.id.tvIdUserMission,
									R.id.tvMissionTitle, 
									R.id.tvMissionDescription, 
									R.id.tvMissionStatus};
					
					ListAdapter listAdapter = new SimpleAdapter(getApplicationContext(), 
																	missionList, 
																	R.layout.adventure_missions_row, 
																	campos, 
																	layout);
					
					try{
						listView.setAdapter(listAdapter);
					}catch(Exception e){
						e.printStackTrace();
					}
				}
			}
		}.execute();
	}
	
}
